home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / Internet / FWCyPart.h < prev    next >
Encoding:
Text File  |  1996-09-17  |  6.0 KB  |  161 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWCyPart.h
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //    
  8. //========================================================================================
  9. //
  10. //    Support for FW_OCyberPartExtension. Wraps it so that the developer
  11. //    never needs to deal with SOM. Also implements basic recipes.
  12. //    
  13.  
  14. #ifndef FWCYPART_H
  15. #define FWCYPART_H
  16.  
  17. #ifndef FWEVENTH_H
  18. #include "FWEventH.h"
  19. #endif
  20.  
  21. #ifndef SLCYPART_H
  22. #include "SLCyPart.h"
  23. #endif
  24.  
  25. #ifndef SOM_ODF_FW_OCyberPartExtension_xh
  26. #include "SLCyPart.xh"
  27. #endif
  28.  
  29. #ifndef SLODTHRD_H
  30. #include "SLODThrd.h"
  31. #endif
  32.  
  33. #ifndef SOM_CyberItem_xh
  34. #include <CyberItem.xh>
  35. #endif
  36.  
  37. #ifndef FWACQUIR_H
  38. #include "FWAcquir.h"
  39. #endif
  40.  
  41. //========================================================================================
  42. // Forward Class Declarations
  43. //========================================================================================
  44.  
  45. class FW_CPart;
  46. class FW_CEventDispatcher;
  47. class FW_CThread;
  48. class FW_CCyberdogHelper;
  49. class CyberServiceMenu;
  50.  
  51. //========================================================================================
  52. // Typedefs and Enums
  53. //========================================================================================
  54.  
  55. typedef FW_TAcquiredODRefCntObject<ODF_FW_OCyberPartExtension> FW_CAcquiredODFCyberPartExtension;
  56. typedef FW_TOrderedCollection<FW_CThread> FW_CThreadsCollection;
  57.  
  58. enum { FW_kUseCyberMenus = true, FW_kStandardMenus = false };
  59. enum { FW_kUseNavigator = true, FW_kStandardPart = false };
  60.  
  61. //========================================================================================
  62. // Cyberdog Utilities
  63. //========================================================================================
  64.  
  65. FW_CCyberdogHelper* FW_SupportCyberdogIfPresent (Environment* ev, FW_CPart* part, FW_Boolean cymenus, ODCommandID cybase, FW_Boolean cynav);
  66.  
  67. //========================================================================================
  68. // Class FW_CCyberdogCallbacks
  69. //========================================================================================
  70.  
  71. class FW_CCyberdogCallbacks: public FW_SCyberPartExtensionCallbacks 
  72. {
  73. public:
  74.     FW_DECLARE_AUTO (FW_CCyberdogCallbacks)
  75.     
  76.                         FW_CCyberdogCallbacks (FW_CPart* part);
  77.     virtual             ~FW_CCyberdogCallbacks ();
  78.     void                Initialize (Environment* ev);
  79.     
  80.     // Cyberdog Callbacks
  81.     virtual void         HandleOpenCyberItem (Environment* ev, CyberItem* item, ODPart* openerPart, ParameterSet* parameters);
  82.     virtual void         DoSetCyberItem(Environment* ev, CyberItem* newItem, ParameterSet* parameters);
  83.     virtual ODBoolean     DoCanShowCyberItem(Environment* ev, CyberItem* item);
  84.     virtual void         DoShowCyberItem     (Environment* ev, CyberItem* item);
  85.     virtual ODWindow*     DoGetCyberItemWindow (Environment* ev, CyberItem* item);
  86.     virtual ODBoolean     DoIsCyberItemSelected (Environment* ev, ODFrame* frame);
  87.     virtual void         DoAcquireSelectedCyberItems (Environment* ev, ODFrame* frame, CyberItemList* items);
  88.     virtual ODBoolean     DoIsURLSelected     (Environment* ev, ODFrame* frame);
  89.     virtual void         DoGetSelectedURL     (Environment* ev, ODFrame* frame, FW_CString & url);
  90.     virtual ODBoolean     HandleCyberCommand     (Environment* ev, long commandSuite, long command, ODFrame* frame, somToken parameters);
  91.     enum { FW_kHandledCyberCommand = true, FW_kContinueCyberCommand = false };
  92.     
  93.     // Accessors & Utilities
  94.     FW_CPart*             GetPart()            { return fPart; }
  95.     CyberPartExtension* GetExtension (Environment* ev);
  96.     FW_Boolean             CyberdogIsLoaded (Environment* ev);
  97. private:
  98.     static ODExtension* CreateCyberExtension (Environment* ev, FW_CPart *part, const char* name, void* self);
  99. private:
  100.     FW_CAcquiredODFCyberPartExtension fExtension;
  101.     FW_CPart*             fPart;
  102. };
  103.  
  104. //========================================================================================
  105. // Class FW_CCyberdogHelper
  106. //========================================================================================
  107.  
  108. class FW_CCyberdogHelper: public FW_CCyberdogCallbacks, public FW_MEventHandler {
  109. public:
  110.     FW_DECLARE_AUTO (FW_CCyberdogHelper)
  111.                         FW_CCyberdogHelper (FW_CPart* part);
  112.                         ~FW_CCyberdogHelper ();
  113.     
  114.     // Configure Cyberdog support. Do you want to show up in the "Navigator" window?
  115.     // Do you want to display the standard Cyberdog menus?
  116.     void                 Initialize (Environment* ev, FW_Boolean cymenus, ODCommandID cybase, FW_Boolean cynav);
  117.     
  118.     // Threads Support
  119.     void                 SetLoadCyberItemThreadProcedure (FW_ThreadProcedure loadCyberItem, void* parameters);
  120.     virtual void         DoSetCyberItem (Environment* ev, CyberItem* newItem, ParameterSet* parameters);
  121.     
  122.     // CloseCyberDraftWindow & Cyberdog Menus Support
  123.     virtual FW_Handled DoMenu (Environment* ev, const FW_CMenuEvent& event);
  124.     virtual FW_Handled DoAdjustMenus (Environment *ev, FW_CMenuBar* menuBar, FW_Boolean hasMenuFocus, FW_Boolean isRoot);
  125.  
  126.     // Accessors
  127.     CyberItem*             GetCyberItem (Environment* ev);
  128.     CyberSession*         GetCyberSession (Environment* ev);
  129.     //CyberPartExtension* AcquireCyberExtension();
  130.     CyberServiceMenu*    GetCyberServiceMenu() const { return fCyberServiceMenu; }
  131.     
  132.     //
  133.     // Utilities
  134.     //
  135.     ODPart*             AcquireContainingNavigator (Environment* ev);
  136.     CyberItem*             InternalizeCyberItem (Environment* ev, FW_OSink* sink, Boolean reload);
  137.     void                 ExternalizeCurrentCyberItem (Environment* ev, FW_OSink* sink);
  138.     
  139.     //
  140.     // Navigator support
  141.     //
  142.     virtual void         HandleOpenCyberItem (Environment* ev, CyberItem* item, ODPart* openerPart, ParameterSet* parameters);
  143.     CyberProgressBroadcaster* MakeCyberProgressBroadcaster (Environment* ev, short mode);
  144.     virtual void         DoCyberAbort (Environment *ev, CyberProgressBroadcaster* broadcaster);
  145.     static void         PrivCyberAbort (CDAbortProcMessage message, CyberProgressBroadcaster* broadcaster, Ptr self_Mixin);
  146. private:
  147.     Handle                 fCyberdogMenuHandle;
  148.     CyberServiceMenu*     fCyberServiceMenu;
  149.     ODCommandID         fCyberCommands;
  150.     FW_Boolean             fUseNavigator;
  151.     //
  152.     // Threads Support
  153.     //
  154.     FW_ThreadProcedure     fLoadCyberItemThreadProcedure;
  155.     void*                 fLoadCyberItemThreadParameters;
  156.     FW_CThreadsCollection fThreads;
  157. };
  158.  
  159. #endif // FWCYPART_H
  160.  
  161.